Feature Extraction এবং Data Transformation Techniques

Big Data and Analytics - অ্যাপাচি স্পার্ক (Apache Spark) - Spark Machine Learning (MLlib)
472

Apache Spark একটি অত্যন্ত শক্তিশালী ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক যা ডেটা ম্যানিপুলেশন এবং বিশ্লেষণের জন্য অনেক কার্যকরী টুল প্রদান করে। মেশিন লার্নিং (ML) প্রক্রিয়াতে Feature Extraction এবং Data Transformation অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এই পর্যায়ে ডেটাকে প্রস্তুত করা হয়, যাতে মডেল সঠিকভাবে প্রশিক্ষিত হতে পারে।

এই টিউটোরিয়ালে, আমরা Feature Extraction এবং Data Transformation এর বিভিন্ন কৌশল নিয়ে আলোচনা করব, যা স্পার্কে ডেটার ওপর প্রয়োগ করা যায়।


Feature Extraction in Apache Spark

Feature Extraction হল এমন একটি প্রক্রিয়া যেখানে কাঁচা ডেটা থেকে প্রয়োজনীয় বৈশিষ্ট্য বা তথ্য বের করা হয়, যাতে মডেলটি সঠিকভাবে কাজ করতে পারে। স্পার্কে MLlib (মেশিন লার্নিং লাইব্রেরি) ব্যবহার করে বিভিন্ন ধরণের ফিচার এক্সট্র্যাকশন করা যায়, যেমন text, image, categorical data, এবং numeric data থেকে ফিচার বের করা।

1. Text Feature Extraction

টেক্সট ডেটা থেকে ফিচার এক্সট্র্যাকশন করতে TF-IDF (Term Frequency-Inverse Document Frequency) এবং Word2Vec পদ্ধতি ব্যবহৃত হয়।

TF-IDF Feature Extraction:
import org.apache.spark.ml.feature.{HashingTF, IDF, Tokenizer}
import org.apache.spark.ml.Pipeline

// Sample data
val sentenceData = spark.createDataFrame(Seq(
  (0, "Hi I heard about Spark".split(" ")),
  (1, "I wish Java could use case classes".split(" "))
)).toDF("id", "words")

// Tokenization
val tokenizer = new Tokenizer().setInputCol("words").setOutputCol("words")

// HashingTF
val hashingTF = new HashingTF().setInputCol("words").setOutputCol("rawFeatures").setNumFeatures(1000)

// IDF
val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")

// Pipeline
val pipeline = new Pipeline().setStages(Array(tokenizer, hashingTF, idf))

val model = pipeline.fit(sentenceData)
val result = model.transform(sentenceData)
result.show()

এখানে:

  • Tokenizer টেক্সট ডেটাকে শব্দের তালিকায় ভেঙে দেয়।
  • HashingTF এবং IDF ফিচার গুলি তৈরি করে, যা ডেটাকে সংখ্যার ফিচারে রূপান্তরিত করে।

2. Word2Vec Feature Extraction

Word2Vec পদ্ধতি শব্দগুলির মধ্যে সম্পর্ক বের করে, যাতে প্রতিটি শব্দের একটি ভেক্টর হিসেবে রূপান্তরিত হয়।

import org.apache.spark.ml.feature.Word2Vec

// Sample data
val documentDF = spark.createDataFrame(Seq(
  (0, ["Hi", "I", "heard", "about", "Spark"]),
  (1, ["I", "wish", "Java", "could", "use", "case", "classes"])
)).toDF("id", "text")

// Word2Vec
val word2Vec = new Word2Vec()
  .setInputCol("text")
  .setOutputCol("result")
  .setVectorSize(3)
  .setMinCount(0)

val model = word2Vec.fit(documentDF)
val result = model.transform(documentDF)
result.show()

এখানে:

  • Word2Vec শব্দগুলিকে ভেক্টর আকারে রূপান্তরিত করে এবং তাদের মধ্যে সেমান্টিক সম্পর্ক নির্ধারণ করে।

Data Transformation Techniques in Apache Spark

Data Transformation হল ডেটার কাঠামো বা মান পরিবর্তন করার প্রক্রিয়া, যা মডেল তৈরি বা বিশ্লেষণের জন্য ডেটাকে প্রস্তুত করে। স্পার্কে ডেটার উপর বিভিন্ন ধরনের ট্রান্সফরমেশন ব্যবহার করা হয়, যেমন scaling, normalization, categorical encoding, এবং feature engineering

1. Scaling and Normalization

ডেটা স্কেলিং এবং নর্মালাইজেশন হল এমন একটি প্রক্রিয়া যা ডেটার মানের পরিসীমা কমিয়ে আনতে সাহায্য করে। স্পার্কে StandardScaler এবং MinMaxScaler ব্যবহার করে স্কেলিং করা যায়।

StandardScaler (Mean 0, Standard Deviation 1):
import org.apache.spark.ml.feature.StandardScaler
import org.apache.spark.ml.linalg.Vectors

// Sample data
val data = Seq(
  (0, Vectors.dense([1.0, 0.1, -1.0]), 1.0),
  (1, Vectors.dense([2.0, 1.1, 1.0]), 1.1),
  (2, Vectors.dense([3.0, 10.1, 3.0]), 1.3)
)
val df = spark.createDataFrame(data).toDF("id", "features", "label")

// StandardScaler
val scaler = new StandardScaler()
  .setInputCol("features")
  .setOutputCol("scaledFeatures")
  .setWithStd(true)
  .setWithMean(true)

val scalerModel = scaler.fit(df)
val scaledData = scalerModel.transform(df)
scaledData.show()

এখানে:

  • StandardScaler ব্যবহার করে features কলামটি স্কেল করা হয়েছে।

MinMaxScaler (Scaling to a Specific Range):

import org.apache.spark.ml.feature.MinMaxScaler

val scaler = new MinMaxScaler()
  .setInputCol("features")
  .setOutputCol("scaledFeatures")

val scalerModel = scaler.fit(df)
val scaledData = scalerModel.transform(df)
scaledData.show()

এখানে:

  • MinMaxScaler ব্যবহার করে ডেটাকে ০ থেকে ১ এর মধ্যে স্কেল করা হয়েছে।

2. Categorical Encoding

Categorical Encoding হল সেই প্রক্রিয়া যেখানে ক্যাটেগোরিক্যাল ডেটাকে নম্বরে রূপান্তরিত করা হয়, যাতে মেশিন লার্নিং মডেল ডেটা ব্যবহারের জন্য প্রস্তুত হয়। এটি StringIndexer এবং OneHotEncoder এর মাধ্যমে করা যায়।

StringIndexer:
import org.apache.spark.ml.feature.StringIndexer

val df = spark.createDataFrame(Seq(
  ("Male", 1),
  ("Female", 0),
  ("Male", 1),
  ("Female", 0)
)).toDF("gender", "label")

val indexer = new StringIndexer().setInputCol("gender").setOutputCol("genderIndex")
val indexedData = indexer.fit(df).transform(df)
indexedData.show()

এখানে:

  • StringIndexer ব্যবহার করে gender কলামটি ইনডেক্স করা হয়েছে, যা ক্যাটেগোরিক্যাল মানগুলিকে গাণিতিক মানে রূপান্তরিত করে।
OneHotEncoder:
import org.apache.spark.ml.feature.OneHotEncoder

val encoder = new OneHotEncoder().setInputCol("genderIndex").setOutputCol("genderVec")
val encodedData = encoder.transform(indexedData)
encodedData.show()

এখানে:

  • OneHotEncoder ব্যবহার করে ইনডেক্সড ডেটা one-hot এনকোডিং করা হয়েছে।

3. Feature Engineering

Feature Engineering হল ডেটার গুরুত্বপূর্ণ বৈশিষ্ট্যগুলো তৈরি করার প্রক্রিয়া। স্পার্কে কিছু জনপ্রিয় feature engineering কৌশল রয়েছে, যেমন polynomial features, interaction terms, এবং custom feature creation

Polynomial Features:
import org.apache.spark.ml.feature.PolynomialExpansion

val polyExpansion = new PolynomialExpansion()
  .setInputCol("features")
  .setOutputCol("polyFeatures")
  .setDegree(2)

val expandedData = polyExpansion.transform(df)
expandedData.show()

এখানে:

  • PolynomialExpansion ফিচারগুলোকে পলিনোমিয়াল ফিচারে রূপান্তরিত করছে।
Interaction Terms:
import org.apache.spark.ml.feature.VectorAssembler

val assembler = new VectorAssembler()
  .setInputCols(Array("feature1", "feature2"))
  .setOutputCol("features")

val featureData = assembler.transform(df)

এখানে:

  • VectorAssembler ব্যবহার করে feature1 এবং feature2 এর মধ্যে interaction term তৈরি করা হয়েছে।

Conclusion

Feature Extraction এবং Data Transformation হল মেশিন লার্নিং মডেল তৈরির অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া, যেখানে কাঁচা ডেটা থেকে কার্যকরী বৈশিষ্ট্য এবং ট্রান্সফর্মেশন তৈরি করা হয়। স্পার্কের MLlib এর সাহায্যে আপনি text feature extraction, scaling, categorical encoding, এবং feature engineering এর মতো বিভিন্ন প্রক্রিয়া সহজে করতে পারেন। এই কৌশলগুলো ব্যবহার করে আপনি ডেটাকে মডেলিংয়ের জন্য প্রস্তুত করতে পারবেন এবং সঠিকভাবে বিশ্লেষণ করতে পারবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...